Closer to Reliable Software: Verifying Functional Behaviour of Concurrent Programs

نویسنده

  • Marina Zaharieva-Stojanovski
چکیده

Static formal verification techniques are an e↵ective method for verification of software. They exploit the advantages of formal methods to statically prove that the implementation of a program satisfies its formally written specification. This makes formal verification especially powerful: any execution of the program is guaranteed to behave correctly. Therefore, these techniques are especially attractive for safety-critical systems, where correctness of the code is a crucial requirement. Applying formal techniques for verification of concurrent software is appealing. First, concurrent software today is omnipresent, but it is especially prone to errors. Second, finding errors in concurrent software using standard dynamic testing techniques is di cult, because of the non-deterministic behaviour of this software. Unfortunately, formal verification of concurrent software is hard and faces many challenges. This thesis contributes with novel formal techniques for verification of multithreaded programs. We focus mainly on verification of functional properties, i.e., properties that describe the behaviour of the program. Concretely, we work with axiomatic reasoning and use permission-based separation logic as our basic program logic. First, we propose a new modular technique for verification of class invariants in concurrent programs. This technique allows breaking of class invariants at certain safe places in the program. The technique is flexible and permissive, and thus, can be applied in a broad range of practical examples. This approach is formalised on a concurrent object-oriented language. Second, we propose a new way of specifying and verifying functional behaviour of methods in the program. Our technique uses separation logic-based reasoning to build an abstraction of the program represented as a process algebra term; by reasoning about the abstract model, we prove properties about the original program. This approach allows very expressive and intuitive specifications.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

An Abstraction Technique for Describing Concurrent Program Behaviour

This paper presents a technique to reason about functional properties of shared-memory concurrent software by means of abstraction. The abstract behaviour of the program is described using process algebras. In the program we indicate which concrete atomic steps correspond to the actions that are used in the process algebra term. Each action comes with a specification that describes its effect o...

متن کامل

Verifying Functional Bulk Synchronous Parallel Programs Using the Coq System

The Bulk Synchronous Parallel ML (BSML) is a functional language for Bulk Synchronous Parallel (BSP) programming. It is based on an extension of the λ-calculus by parallel operations on a parallel data structure named parallel vector, which is given by intention. We present the formal proofs of correctness of BSML programs in the Coq proof assistant. Such development demonstrates the usefulness...

متن کامل

PhD Qualifying Dissertation Validating and Verifying Memory Safety for Concurrent Operating System Code

The current practice of finding programming errors in operating system development is by testing and debugging. However, testing techniques are expensive because of their requirement of manual labour. Furthermore, they are susceptible to missing severe errors. This problem can be solved by applying automated verification techniques such as software model checking. Most of these techniques suffe...

متن کامل

Analysis of Source Code: A Case Study

This paper summarises our experience in using model checking technology to understand concurrent programs. We use Verisoft to understand various aspects of a firewall tool kit. We instrument three components of the firewall tool kit with Verisoft hooks in order to test their behaviour. Some of the key changes include changing socket communication to message passing queues and adding appropriate...

متن کامل

Verifying Concurrent Programs by Controlling Alias Interference

Verifying Concurrent Programs by Controlling Alias Interference

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2015